<html>
<head><meta charset="utf-8"><title>Describing stdsimd&#x27;s approach · project-portable-simd · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/index.html">project-portable-simd</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html">Describing stdsimd&#x27;s approach</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="238865009"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/238865009" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#238865009">(May 15 2021 at 03:47)</a>:</h4>
<p>I dumped some thoughts into this hackmd, which contains some scratch-space of idle musings followed by an RFC template. <a href="https://hackmd.io/u-XfyDs7QDm4H4zjFFXgAg">https://hackmd.io/u-XfyDs7QDm4H4zjFFXgAg</a></p>



<a name="238871139"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/238871139" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#238871139">(May 15 2021 at 05:40)</a>:</h4>
<p>( also feel free to poke at it. )</p>



<a name="239001509"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239001509" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239001509">(May 16 2021 at 19:45)</a>:</h4>
<p>Okay, so I <strong>guess</strong> my question at the moment is why we aren't just trying to implement this entire thing as a trait on array types and then later slice types maybe?</p>



<a name="239001807"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239001807" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239001807">(May 16 2021 at 19:51)</a>:</h4>
<p>I don't necessarily mean as a type that wraps arrays, like how <code>packed_simd</code> does it.<br>
I mean literally <strong>on top</strong> of arrays.<br>
Too ambitious, I guess?</p>



<a name="239003488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239003488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239003488">(May 16 2021 at 20:20)</a>:</h4>
<p>Vectors have different alignment</p>



<a name="239003508"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239003508" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239003508">(May 16 2021 at 20:20)</a>:</h4>
<p>Our types are basically just arrays with larger alignment</p>



<a name="239003782"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239003782" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239003782">(May 16 2021 at 20:25)</a>:</h4>
<p>Yeah, that's probably the big catch.</p>



<a name="239003865"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239003865" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239003865">(May 16 2021 at 20:27)</a>:</h4>
<p>Also, I think just conceptually an array is sequential and a vector is parallel</p>



<a name="239003873"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239003873" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239003873">(May 16 2021 at 20:27)</a>:</h4>
<p>The only thing that's the same about them is the layout, so we allow conversion</p>



<a name="239010888"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239010888" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239010888">(May 16 2021 at 22:24)</a>:</h4>
<p>Hmm, I imagine we _could_ have alignment defined by a trait.</p>



<a name="239010939"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239010939" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239010939">(May 16 2021 at 22:24)</a>:</h4>
<p>but it would have to be impl'd differently for SimdArray vs. <code>array</code>, so.</p>



<a name="239010979"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239010979" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239010979">(May 16 2021 at 22:25)</a>:</h4>
<p>How could you define alignment with a trait?  That doesn't really make sense to me</p>



<a name="239348314"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239348314" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239348314">(May 19 2021 at 00:54)</a>:</h4>
<p>Uhmmm hmmm it would be more or less equivalent to repr(align) tbh?</p>



<a name="239349388"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239349388" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239349388">(May 19 2021 at 01:08)</a>:</h4>
<p>I guess I mean how would you make an array that sometimes has different alignment</p>



<a name="239349433"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239349433" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239349433">(May 19 2021 at 01:09)</a>:</h4>
<p>I think it inherently needs to be a different type for that</p>



<a name="239350048"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239350048" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239350048">(May 19 2021 at 01:18)</a>:</h4>
<p>Yeah, that's what I slowly realized.</p>



<a name="239504964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239504964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239504964">(May 19 2021 at 22:30)</a>:</h4>
<p>I think there <em>is</em> one thing we're strongly implying though: we do not expect arrays to have their alignment automagically "right-sized" to 16+ bytes and thus made eligible for certain easy retouches with vectorization.</p>



<a name="239505071"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239505071" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239505071">(May 19 2021 at 22:31)</a>:</h4>
<p>Overaligning normal arrays would block a bunch of things like <code>as_chunks</code>, so I think it's a non-starter.  Thus the simd types for when that's wanted.</p>



<a name="239505213"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239505213" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239505213">(May 19 2021 at 22:32)</a>:</h4>
<p>I think I'm still just hung up on them being semantically different even more than the layout.  Signed and unsigned ints have the same layout and could just be separate functions (like LLVM) but that's just not a particularly usable interface</p>



<a name="239508522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/239508522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#239508522">(May 19 2021 at 23:05)</a>:</h4>
<p>I know, but we gotta put something in the alternatives section. <span aria-label="wink" class="emoji emoji-1f609" role="img" title="wink">:wink:</span></p>



<a name="240254361"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/240254361" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#240254361">(May 25 2021 at 21:47)</a>:</h4>
<p>Speaking of overaligned arrays: they came up here, imagined as <code>Aligned&lt;[u8; 4], 4&gt;</code><br>
<a href="https://github.com/rust-lang/rust/issues/76976">https://github.com/rust-lang/rust/issues/76976</a><br>
<a href="https://github.com/rust-lang/rust/issues/74985">https://github.com/rust-lang/rust/issues/74985</a></p>



<a name="241708774"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241708774" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241708774">(Jun 06 2021 at 20:14)</a>:</h4>
<p>OK, I guess the other question is: why don't we just use <code>Simd&lt;[T; N]&gt;</code> like packed_simd was moving towards? Too non-ergonomic or smth?</p>



<a name="241708891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241708891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241708891">(Jun 06 2021 at 20:17)</a>:</h4>
<p>oh that would probably make the documentation for <code>Simd&lt;[T; N]&gt;</code> utterly illegible with all those different impl-dependent methods, and we'd probably be constantly breaking on weird method resolution issues.</p>



<a name="241709522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241709522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241709522">(Jun 06 2021 at 20:32)</a>:</h4>
<p>I think we had wondered if it makes sense to be generic over the element type or not</p>



<a name="241709559"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241709559" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241709559">(Jun 06 2021 at 20:33)</a>:</h4>
<p>We have a handful of functions that would work for any element type, but the vast majority don't, I think</p>



<a name="241711788"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241711788" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241711788">(Jun 06 2021 at 21:31)</a>:</h4>
<p>Yeah. We could define SimdInt, SimdUint, and SimdFloat traits, I guess???</p>



<a name="241714416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241714416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241714416">(Jun 06 2021 at 22:45)</a>:</h4>
<p>And probably a general vector trait as well</p>



<a name="241716703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241716703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241716703">(Jun 06 2021 at 23:50)</a>:</h4>
<p>Note that we don't have a general "array" trait, nor a general "integer" trait, so it's not obvious that simd should have traits for those things either.</p>
<p>(Not saying that it shouldn't, either, just that it would need justifying.)</p>



<a name="241716716"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241716716" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241716716">(Jun 06 2021 at 23:51)</a>:</h4>
<p>I agree, they probably should have traits but I think that goes with whatever RFC is adding them for scalars (and in many ways perhaps they should share some traits with scalars?)</p>



<a name="241716905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241716905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241716905">(Jun 06 2021 at 23:56)</a>:</h4>
<p>I mean we really should have a float trait though</p>



<a name="241716917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241716917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241716917">(Jun 06 2021 at 23:57)</a>:</h4>
<p>I think it would be premature to design that trait without considering the design for scalars too</p>



<a name="241716921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241716921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241716921">(Jun 06 2021 at 23:57)</a>:</h4>
<p>Right, <em>scalars</em> should have a Float trait is what I'm saying.</p>



<a name="241717868"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241717868" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241717868">(Jun 07 2021 at 00:22)</a>:</h4>
<p><span class="user-mention silent" data-user-id="125270">scottmcm</span> <a href="#narrow/stream/257879-project-portable-simd/topic/Describing.20stdsimd's.20approach/near/241716703">said</a>:</p>
<blockquote>
<p>Note that we don't have a general "array" trait, nor a general "integer" trait, so it's not obvious that simd should have traits for those things either.</p>
<p>(Not saying that it shouldn't, either, just that it would need justifying.)</p>
</blockquote>
<p>For SIMD, the primary trait over SIMD "arrays" in question will serve more as an equivalent to Iterator&lt;Item = T&gt; in its overall logical positioning in terms of traits and types.</p>



<a name="241717895"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241717895" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241717895">(Jun 07 2021 at 00:23)</a>:</h4>
<p>What does this hypothetical trait do, I'm curious?  That AsRef, Into, etc don't</p>



<a name="241724221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241724221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241724221">(Jun 07 2021 at 03:16)</a>:</h4>
<p><span class="user-mention silent" data-user-id="312331">Caleb Zulawski</span> <a href="#narrow/stream/257879-project-portable-simd/topic/Describing.20stdsimd's.20approach/near/241717895">said</a>:</p>
<blockquote>
<p>What does this hypothetical trait do, I'm curious?  That AsRef, Into, etc don't</p>
</blockquote>
<p>the biggest advantage and the reason I'd push for it even if it didn't offer any methods, tbh, is it gives us a way to express the vector:scalar relationship.</p>



<a name="241724329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241724329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241724329">(Jun 07 2021 at 03:19)</a>:</h4>
<p>and in doing so, if we decide it's good, it will let us remove a <strong>lot</strong> of macro boilerplate.</p>



<a name="241724382"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241724382" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241724382">(Jun 07 2021 at 03:20)</a>:</h4>
<p>Oh yeah, I would support that</p>



<a name="241724397"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/241724397" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#241724397">(Jun 07 2021 at 03:21)</a>:</h4>
<p>the trait impl itself is kinda grody but like... the grodiness happens <strong>once</strong>. ^^;</p>



<a name="242238731"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242238731" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242238731">(Jun 10 2021 at 17:06)</a>:</h4>
<p>Ah, and we should contrast against <a href="https://github.com/rust-lang/rfcs/pull/2948/files">https://github.com/rust-lang/rfcs/pull/2948/files</a> as well.</p>



<a name="242258426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242258426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242258426">(Jun 10 2021 at 19:31)</a>:</h4>
<p>hmm, should that pull request be closed in favor of waiting for the rfc we're working on?</p>



<a name="242260440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242260440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242260440">(Jun 10 2021 at 19:48)</a>:</h4>
<p>I mean technically, we can just overwrite it, having "updated it in response to concerns". <span aria-label="upside down" class="emoji emoji-1f643" role="img" title="upside down">:upside_down:</span></p>



<a name="242260452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242260452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242260452">(Jun 10 2021 at 19:48)</a>:</h4>
<p>I don't want to close any PRs prematurely.</p>



<a name="242287938"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242287938" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242287938">(Jun 11 2021 at 00:23)</a>:</h4>
<p>Slightly off -topic: <span class="user-mention" data-user-id="281757">@Jubilee</span> am I correct that before a PR lands in Rust's stdlib, it's run against all crates registered in <a href="http://crates.io">crates.io</a> in a Crater run?</p>



<a name="242288043"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242288043" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242288043">(Jun 11 2021 at 00:24)</a>:</h4>
<p>Crater is only run if it's expected to possibly break something</p>



<a name="242288078"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242288078" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242288078">(Jun 11 2021 at 00:25)</a>:</h4>
<p>For example adding to core/std would not and doesn't require a crater run, but changing functionality might</p>



<a name="242288243"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242288243" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242288243">(Jun 11 2021 at 00:28)</a>:</h4>
<p>Gotcha. Thanks!</p>



<a name="242288258"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242288258" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242288258">(Jun 11 2021 at 00:29)</a>:</h4>
<p>But it is against all the packages in <a href="http://crates.io">crates.io</a> with a compat bound on stable right?</p>



<a name="242288798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242288798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242288798">(Jun 11 2021 at 00:39)</a>:</h4>
<p>Well not stable, since crater runs the nightly compiler, but yeah I think it's all crates</p>



<a name="242289879"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242289879" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242289879">(Jun 11 2021 at 01:00)</a>:</h4>
<p>iirc crater also includes all publicly-visible projects on github</p>



<a name="242290088"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242290088" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242290088">(Jun 11 2021 at 01:05)</a>:</h4>
<p>Crater is only run sparingly, experiments generally take multiple days to complete, and are only run in the case of great uncertainty. The Rust test suite includes all the regression tests that Rust is concerned with.</p>



<a name="242290457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242290457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242290457">(Jun 11 2021 at 01:12)</a>:</h4>
<p>Ok, I'm aking because Julia runs a "PkgEval" run for every registered package against the new release to see if there are any breakages (v1.6 -&gt; v1.6.1 -&gt; v1.7 etc).</p>



<a name="242290568"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242290568" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242290568">(Jun 11 2021 at 01:15)</a>:</h4>
<p>Oh there's simply too many and not enough processing power for that.</p>



<a name="242290639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242290639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242290639">(Jun 11 2021 at 01:16)</a>:</h4>
<p>I mean, 4000 packages is a respectable count, I'm not saying Julia has a <strong>lack</strong> of libraries.<br>
But Rust has a bit longer compilation loop to begin with...<br>
...and 62,461 entries in <a href="http://crates.io">crates.io</a> alone.</p>



<a name="242290747"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242290747" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242290747">(Jun 11 2021 at 01:18)</a>:</h4>
<p>So we're starting with that 60k and THEN adding whatever else crater finds in the wider "Rust ecosystem".</p>



<a name="242290871"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242290871" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242290871">(Jun 11 2021 at 01:21)</a>:</h4>
<p>hot diggity damn, yeah that's understandable.</p>



<a name="242290875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242290875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242290875">(Jun 11 2021 at 01:21)</a>:</h4>
<p>Thanks for the pointer!</p>



<a name="242290915"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242290915" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242290915">(Jun 11 2021 at 01:21)</a>:</h4>
<p>I had it in my head that Rust is about 10x larger than Julia, and ~15x crates is close enough.</p>



<a name="242296078"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242296078" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242296078">(Jun 11 2021 at 03:04)</a>:</h4>
<p>Last I ran crater, <a href="https://crater.rust-lang.org/ex/pr-82322">the run</a> took 3½ days and the report said it looked at 146944 crates.</p>
<p>...and that was a check-only run.  The ones that run <code>cargo test</code> instead of <code>cargo check</code> take even longer.</p>



<a name="242296275"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242296275" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242296275">(Jun 11 2021 at 03:07)</a>:</h4>
<p><span class="user-mention silent" data-user-id="246783">Miguel Raz Guzmán Macedo</span> <a href="#narrow/stream/257879-project-portable-simd/topic/Describing.20stdsimd's.20approach/near/242290457">said</a>:</p>
<blockquote>
<p>Ok, I'm aking because Julia runs a "PkgEval" run for every registered package against the new release to see if there are any breakages (v1.6 -&gt; v1.6.1 -&gt; v1.7 etc).</p>
</blockquote>
<p>Rust also runs a crater run against the beta.  Just not every PR.</p>



<a name="242297788"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242297788" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242297788">(Jun 11 2021 at 03:37)</a>:</h4>
<p>Not to mention crater sometimes crashes <span aria-label="smile" class="emoji emoji-1f642" role="img" title="smile">:smile:</span> I had a PR a while back that took probably two weeks to complete</p>



<a name="242354017"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242354017" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242354017">(Jun 11 2021 at 14:36)</a>:</h4>
<p>Awesome, thanks for the input people.</p>



<a name="242354073"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242354073" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242354073">(Jun 11 2021 at 14:36)</a>:</h4>
<p>Does stdsimd give access to any of the MXCSR bit fields?</p>



<a name="242354583"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242354583" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242354583">(Jun 11 2021 at 14:39)</a>:</h4>
<p>We need the <code>vldmxcsr, vldstmxcsr</code> instructions available to operate on those registers I think.</p>



<a name="242355798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242355798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242355798">(Jun 11 2021 at 14:48)</a>:</h4>
<p>Hell No.</p>



<a name="242356110"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242356110" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242356110">(Jun 11 2021 at 14:51)</a>:</h4>
<p>... ok...</p>



<a name="242356144"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242356144" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242356144">(Jun 11 2021 at 14:51)</a>:</h4>
<p>...sorry. ^^;;;</p>



<a name="242356195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242356195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242356195">(Jun 11 2021 at 14:51)</a>:</h4>
<p>So like... the problem with those is that access to the MXCSR bit field actually can break LLVM compilation assumptions.</p>



<a name="242356240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242356240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242356240">(Jun 11 2021 at 14:52)</a>:</h4>
<p>it's literally UB.</p>



<a name="242356521"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242356521" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242356521">(Jun 11 2021 at 14:54)</a>:</h4>
<p>To touch it. At all.<br>
Now, it so happens that LLVM may not break your code if you actually do it, and LLVM is slowly growing the capability to handle altering MXCSR in a principled manner, but anyone touching it is doing so at their own risk, aware that it's UB.</p>
<p>And we cannot at all expose that API to users, even unsafely, because some floating point vector targets require all alterations of the FP environment to be known and embedded in instructions statically.</p>



<a name="242356848"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242356848" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242356848">(Jun 11 2021 at 14:57)</a>:</h4>
<p>Yeah, those are good reasons not to touch that then!</p>



<a name="242357047"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242357047" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242357047">(Jun 11 2021 at 14:59)</a>:</h4>
<p>Another silly question - are <code>xmm</code> operations called scalar floating point, and <code>ymm/zmm</code> operations called vector floating point?</p>



<a name="242357130"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242357130" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> bjorn3 <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242357130">(Jun 11 2021 at 14:59)</a>:</h4>
<p>xmm is 128bit and can hold 2 64bit floats or 4 32bit floats. it can also hold integers. ymm is 256bit and zmm 512bit.</p>



<a name="242357243"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242357243" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242357243">(Jun 11 2021 at 15:00)</a>:</h4>
<p>That I get - I'm just trying to make sense of the terminology used in this assembly/SIMD book I'm learning. It's <code>Modern x86 Assembly</code> By Kusswurm.</p>



<a name="242357783"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242357783" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242357783">(Jun 11 2021 at 15:04)</a>:</h4>
<p>Uhhh, do we have horizontal packed addition and subtraction? (Not horizontal sum)</p>



<a name="242357860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242357860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242357860">(Jun 11 2021 at 15:04)</a>:</h4>
<p>What's the difference?</p>



<a name="242358288"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242358288" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242358288">(Jun 11 2021 at 15:08)</a>:</h4>
<p><code>vhaddps xmm3, xmm1, xmm2</code> does</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="n">xmm3</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">xmm0</span><span class="p">[</span><span class="mi">0</span><span class="o">..=</span><span class="mi">1</span><span class="p">].</span><span class="n">sum</span><span class="p">()</span><span class="w"></span>
<span class="n">xmm3</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">xmm0</span><span class="p">[</span><span class="mi">2</span><span class="o">..=</span><span class="mi">3</span><span class="p">].</span><span class="n">sum</span><span class="p">()</span><span class="w"></span>
<span class="n">xmm3</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">xmm0</span><span class="p">[</span><span class="mi">0</span><span class="o">..=</span><span class="mi">1</span><span class="p">].</span><span class="n">sum</span><span class="p">()</span><span class="w"></span>
<span class="n">xmm3</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">xmm0</span><span class="p">[</span><span class="mi">2</span><span class="o">..=</span><span class="mi">3</span><span class="p">].</span><span class="n">sum</span><span class="p">()</span><span class="w"></span>
</code></pre></div>



<a name="242358640"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242358640" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242358640">(Jun 11 2021 at 15:09)</a>:</h4>
<p><code>vhsubpd xmm3, xmm1, xmm2</code> does</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="n">xmm3</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">xmm2</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">xmm2</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"></span>
<span class="n">xmm3</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">xmm1</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">xmm1</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"></span>
</code></pre></div>



<a name="242358752"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242358752" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242358752">(Jun 11 2021 at 15:10)</a>:</h4>
<p>xmm can be either scalar OR vector floating point.</p>



<a name="242358834"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242358834" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242358834">(Jun 11 2021 at 15:11)</a>:</h4>
<p>Oh we don't have any partial adds like that, you'd have to shuffle the vectors to do that</p>



<a name="242358845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242358845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242358845">(Jun 11 2021 at 15:11)</a>:</h4>
<p>Gotcha - is there a big latency penalty for using xmm and not fp registers? Or are all fp registers xmm registers?</p>



<a name="242358869"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242358869" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242358869">(Jun 11 2021 at 15:11)</a>:</h4>
<p>xmm are the FP registers <span aria-label="smile" class="emoji emoji-1f642" role="img" title="smile">:smile:</span></p>



<a name="242358922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242358922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242358922">(Jun 11 2021 at 15:11)</a>:</h4>
<p><span class="user-mention" data-user-id="312331">@Caleb Zulawski</span> ok - Do we plan to support those instructions? I don't mind taking it on.</p>



<a name="242358995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242358995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242358995">(Jun 11 2021 at 15:12)</a>:</h4>
<p><span class="user-mention" data-user-id="312331">@Caleb Zulawski</span> , ah ok, that tracks.</p>



<a name="242358999"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242358999" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242358999">(Jun 11 2021 at 15:12)</a>:</h4>
<p>Arm typically works like that nowadays as well</p>



<a name="242359020"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242359020" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242359020">(Jun 11 2021 at 15:12)</a>:</h4>
<p>Though slightly differently</p>



<a name="242359024"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242359024" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242359024">(Jun 11 2021 at 15:12)</a>:</h4>
<p>And you do <strong>not</strong> want to use the x87 FPU, generally, because it's slow and all hell breaks loose.</p>



<a name="242359068"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242359068" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242359068">(Jun 11 2021 at 15:12)</a>:</h4>
<p><span class="user-mention" data-user-id="246783">@Miguel Raz Guzmán Macedo</span> we probably don't want to support any instructions like that since they're very intel-specific</p>



<a name="242359163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242359163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242359163">(Jun 11 2021 at 15:13)</a>:</h4>
<p>You would be able to generate them with a shuffle but you'd probably get actual shuffles on most other architectures</p>



<a name="242360289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242360289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242360289">(Jun 11 2021 at 15:21)</a>:</h4>
<p>yeah, my general question set for whether we want to support something is something like</p>
<ol start="0">
<li>
<p>does x86-64 support this?<br>
0a. okay, I know I just asked, but does <strong>AMD</strong> support this?</p>
</li>
<li>
<p>does Arm Neon support this?<br>
1a. Arm SVE?</p>
</li>
<li>
<p>Does Power support this?</p>
</li>
<li>How about RISCV-V?</li>
<li>What about GPU vector units?</li>
</ol>



<a name="242360983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242360983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242360983">(Jun 11 2021 at 15:26)</a>:</h4>
<p>Ok ok - I just skimmed my Arm assembly book and yes, there's no instructions like that there.</p>



<a name="242361022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242361022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242361022">(Jun 11 2021 at 15:26)</a>:</h4>
<p>Thanks for the explanations peeps, I'm writing it all down in the diary and starring the responses.</p>



<a name="242361274"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242361274" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242361274">(Jun 11 2021 at 15:28)</a>:</h4>
<p>Note that we hardly need support for all of those but my feelings are somewhat warm towards "flexible vectors" precisely because there's actually more than one implementation of those already.</p>



<a name="242361570"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242361570" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242361570">(Jun 11 2021 at 15:30)</a>:</h4>
<p><span class="user-mention" data-user-id="281757">@Jubilee</span> what's the name of SIMD programming in RISCV? RISCV -V ?</p>



<a name="242361779"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242361779" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242361779">(Jun 11 2021 at 15:32)</a>:</h4>
<p>Yeah, RISCV Vector Extension. I don't even know if it's fully standardized yet but I believe there's some implementations you can load into an FPGA or something. ^^; It's at like 0.999999-FINAL-NO-WAIT-REALLY still I think.</p>



<a name="242361862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/242361862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Miguel Raz Guzmán Macedo <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#242361862">(Jun 11 2021 at 15:33)</a>:</h4>
<p>Neat - I read an essay about how vector programming works in RISCV and it does sound appealing.</p>



<a name="243452039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/243452039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#243452039">(Jun 21 2021 at 22:37)</a>:</h4>
<p>Someone I spoke to complained that it implies a very specific underlying microarchitecture strongly (apparently very like GPUs) and they thought SVE was better for not doing that, but I have to admit RVV is nice for having this very regular abstraction. SVE is still miles better than x86's spiderweb, though, in terms of cleanliness.</p>



<a name="243452174"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/243452174" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#243452174">(Jun 21 2021 at 22:39)</a>:</h4>
<p>icr if I linked it before in this thread, but this is definitely helpful reading for understanding: <a href="https://www.sigarch.org/simd-instructions-considered-harmful/">https://www.sigarch.org/simd-instructions-considered-harmful/</a></p>



<a name="243452298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/243452298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#243452298">(Jun 21 2021 at 22:40)</a>:</h4>
<p>note that was written before Arm SVE existed</p>



<a name="243452711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/243452711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#243452711">(Jun 21 2021 at 22:46)</a>:</h4>
<p>x86's maze of instructions kind of requires you to implicitly shift between "ymm" and "zmm" and "xmm" modes anyways, IIRC.</p>



<a name="243452782"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Describing%20stdsimd%27s%20approach/near/243452782" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Describing.20stdsimd&#x27;s.20approach.html#243452782">(Jun 21 2021 at 22:47)</a>:</h4>
<p>and don't even mention mmx and 3dnow</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>